const Service = require('egg').Service;

class ChatmsgService extends Service {
  /**
   * 创建聊天消息记录
   * @param {Object} msgInfo 消息信息对象
   * @return {Object/Boolean} 创建成功返回记录，失败返回false
   */
  // async create(msgInfo) {
  //   const { ctx } = this;
  //   try {
  //     // 提取消息的前30个字符
  //     const message = msgInfo.message || '';
  //     if (!/\d{3,}/.test(message)) {
  //       ctx.logger.info('消息不包含3位以上连续数字，不保存');
  //       return false;
  //     }
  //     const shortMessage = message.substring(0, 30);

  //     // 检查最近5分钟内是否存在相同消息
  //     const fiveMinutesAgo = new Date(Date.now() - 5 * 60 * 1000);
  //     const existingMsg = await ctx.model.Chatmsg.findOne({
  //       message: {
  //         $regex: new RegExp(
  //           shortMessage.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')
  //         ),
  //       },
  //       timestamp: {
  //         $gte: Math.floor(fiveMinutesAgo.getTime() / 1000),
  //       },
  //     });

  //     if (existingMsg) {
  //       ctx.logger.info('消息已存在，不重复保存');
  //       return false;
  //     }

  //     // 拆分消息为最多204行一组
  //     const lines = message.split('\n');
  //     const maxLines = 204;
  //     const results = [];
  //     for (let i = 0; i < lines.length; i += maxLines) {
  //       const partLines = lines.slice(i, i + maxLines);
  //       const partMessage = partLines.join('\n');
  //       const isparts = lines.length > maxLines;
  //       const result = await ctx.model.Chatmsg.create({
  //         msgtype: msgInfo.msgtype,
  //         fromtype: msgInfo.fromtype,
  //         fromwxid: msgInfo.fromwxid,
  //         finalfrom_wxid: msgInfo.finalfrom_wxid,
  //         finalfrom_groupnick: msgInfo.finalfrom_groupnick || '',
  //         message: partMessage,
  //         timestamp: msgInfo.timestamp,
  //         date: new Date(msgInfo.timestamp * 1000),
  //         isparts,
  //         issend: false,
  //       });
  //       // 备份
  //       await ctx.model.Chatmsgbak.create({
  //         msgtype: msgInfo.msgtype,
  //         fromtype: msgInfo.fromtype,
  //         fromwxid: msgInfo.fromwxid,
  //         finalfrom_wxid: msgInfo.finalfrom_wxid,
  //         finalfrom_groupnick: msgInfo.finalfrom_groupnick || '',
  //         message: msgInfo.message,
  //         timestamp: msgInfo.timestamp,
  //         date: new Date(msgInfo.timestamp * 1000),
  //         isformate: false,
  //       });
  //       results.push(result);
  //     }

  //     return results.length === 1 ? results[0] : results;
  //   } catch (error) {
  //     ctx.logger.error('创建聊天消息记录失败:', error);
  //     throw error;
  //   }
  // }

  // 判断消息类型
  async isMsgType(msgtype) {
    // 消息类型映射
    const msgTypeMap = {
      1: '文本',
      3: '图片',
      34: '语音',
      42: '名片',
      43: '视频',
      47: '动态表情',
      48: '地理位置',
      49: '分享链接或附件',
      2001: '红包',
      2002: '小程序',
      2003: '群邀请',
      10000: '系统消息',
    };
    // 支持传入单个或数组
    if (Array.isArray(msgtype)) {
      return msgtype.map(type => ({
        type,
        name: msgTypeMap[type] || '未知类型',
      }));
    }
    return msgTypeMap[msgtype] || '未知类型';
  }
}

module.exports = ChatmsgService;
